'use strict';

module.exports = app => {
  class SpaceController extends app.APIController {

    // resource api
    * create() {
      const createRule = {
        myid: { type: 'string', required: true, unique: true }, // 自定义id
        name: { type: 'string', required: true },
        alias: { type: 'string', required: false },
        typeId: { type: 'integer', required: true },
    //    category: {type: 'array', required: false },
        description: { type: 'string', required: true },
      };
      // 校验 `ctx.request.body` 是否符合我们预期的格式
      // 如果参数校验未通过，将会抛出一个 status = 422 的异常
      this.ctx.validate(createRule);
      // 调用 service 创建一个 topic
      const newSpace = yield this.ctx.service.space.create(this.ctx.request.body);
      // 设置响应体和状态码
      this.success(newSpace, 201);
    }

    /**
     * @description 查找单个机构
     */
    * findOne() {
      const request = this.ctx.request.spaceId;
      const body = this.ctx.post;

      if (typeof body === 'object' && typeof request === 'object') {
        const spaceId = request.spaceId || body.spaceId;

        if (spaceId) {
          this.ctx.body = yield app.model.space.findOne({ sId: spaceId });
        }
      }
      const space = yield app.model.space.findOne({});
      this.ctx.body = space;
    }

    /**
     * @description 查找多个机构
     */
    * find() {

    }

    * addUserSpace() {

    }

    * listUserSpace() {

    }

    * addRole() {

    }

    * listRole() {

    }

    * listUserRole() {

    }

    /**
     * 将App添加到机构
     */
    * addApp() {

    }

    /**
     * 列出机构中的APP
     */
    * listApp() {

    }

    /**
     * 显示机构可以加的App的列表(在Appstore)里面，这个列表不能包括已经添加到机构的App
     */
    * listAppInStore() {

    }

    * listUserApp() {

    }

  }
  return SpaceController;
};

